home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / jockey / handlers / madwifi.py < prev    next >
Text File  |  2009-10-25  |  3KB  |  73 lines

  1. # (c) 2009 Canonical Ltd.
  2. # Author: Martin Pitt <martin.pitt@ubuntu.com>
  3. # License: GPL v2 or later
  4.  
  5. import logging, subprocess, os.path
  6.  
  7. from jockey.oslib import OSLib
  8. from jockey.handlers import Handler, KernelModuleHandler
  9.  
  10. # dummy stub for xgettext
  11. def _(x): return x
  12.  
  13. class MadwifiHandler(KernelModuleHandler):
  14.     '''Handler for the Madwifi driver.
  15.  
  16.     The free ath5k driver should work with most Atheros cards nowadays, but on
  17.     some models madwifi still works better (or at all).  This driver (ath_pci)
  18.     should be disabled by default by blacklisting it in self.blacklist_file.
  19.     '''
  20.     def __init__(self, ui):
  21.         KernelModuleHandler.__init__(self, ui, 'ath_pci',
  22.                 name=_('Alternate Atheros "madwifi" driver'),
  23.                 description=_('Alternate "madwifi" driver for Atheros wireless LAN cards.'),
  24.                 rationale=_('Only activate this driver if you have problems '
  25.                     'with your wireless LAN connection.\n\n'
  26.                     'The free "ath5k" driver should work with most '
  27.                     'Atheros cards nowadays, but on some computers this '
  28.                     'alternate (but proprietary) driver still works better, '
  29.                     'or at all.'))
  30.         self._free = False
  31.         # do not announce this if ath5k works
  32.         self.announce = not self.module_loaded('ath5k')
  33.         self.blacklist_file = os.path.join(os.path.dirname(
  34.             OSLib.inst.module_blacklist_file), 'blacklist-ath_pci.conf')
  35.  
  36.     def can_change(self):
  37.         if not os.path.exists(self.blacklist_file):
  38.             return _('You removed the configuration file %s') % self.blacklist_file
  39.         return None
  40.  
  41.     def enable(self):
  42.         Handler.enable(self)
  43.         self._update_blacklist('ath5k')
  44.         subprocess.call([OSLib.inst.modprobe_path, self.module])
  45.         self.read_loaded_modules()
  46.         return self.rebind(self.module)
  47.  
  48.     def disable(self):
  49.         self._update_blacklist(self.module)
  50.         self.read_loaded_modules()
  51.         Handler.disable(self)
  52.         return False
  53.  
  54.     def _update_blacklist(self, module):
  55.         '''Update self.blacklist_file to blacklist given module.'''
  56.  
  57.         logging.debug('MadwifiHandler._update_blacklist(%s)' % module)
  58.  
  59.         lines = []
  60.         f = open(self.blacklist_file)
  61.         for l in f:
  62.             if l.startswith('blacklist '):
  63.                 l = 'blacklist %s\n' % module
  64.             lines.append(l)
  65.         f.close()
  66.         f = open(self.blacklist_file + '.new', 'w')
  67.         for l in lines:
  68.             f.write(l)
  69.         f.close()
  70.         os.rename(self.blacklist_file + '.new', self.blacklist_file)
  71.  
  72.         OSLib.inst._load_module_blacklist()
  73.